perm filename TEST0.MF[CM,DEK] blob
sn#800671 filedate 1985-08-16 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00011 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00006 00003 def makebox(text rule) =
C00010 00004 cmchar "The letter a"
C00014 00005
C00029 00006
C00042 00007
C00046 00008
C00050 00009
C00051 00010
C00052 00011
C00054 ENDMK
C⊗;
def makebox(text rule) =
body_depth:=u+serif_fit; body_height:=9u+serif_fit;
for y=-body_depth,0,u,2u,3u,4u,5u,6u,7u,8u,body_height:
rule(↑(l,y),↑(r,y)); endfor % horizontals
for x=l,r: rule(↑(x,-body_depth),↑(x,body_height)); endfor % verticals
for x=u*(1+floor(l/u)) step u until r-1:
rule(↑(x,-body_depth),↑(x,body_height)); endfor % more verticals
if charic≠0: rule((r+charic*pt,h!),(r+charic*pt,.5h!)); fi % italic correction
enddef;
cmchar "The letter a";
beginchar("a",9u#,x_height#,0);
bh#:=min(bar_height#,1.14x_height#-bar_height#); define_pixels(bh);
italcorr 1/3[bh#,x_height#]*slant+.5stem#-serif_fit#-2u#;
adjust_fit(u#+serif_fit#,serif_fit#);
pickup fine.nib; top y3r=h+vround 1.5oo;
if serifs: pos1(flare,180); pos2(hair,180);
pos3(vair,90); lft x1r=round max(u,2.1u-.5flare); x3=.5w-.5u;
y1=min(bh+.5flare+2vair+2,.9[bh,h]-.5flare);
bulb(3,2,1); % bulb
else: pos1(5/7[vair,flare],95); x1l=good.x 1.5u; x1r:=good.x x1r;
pos3(1/8[vair,thin_join],90);
x3=.5w-.2u; top y1r=vround .82[bh,top y3r];
filldraw stroke term.e(3,1,left,.9,4); fi % terminal
pos4(stem,0); rt x4r=round(w-2.5u+.5stem); y4=1/3[bh,h];
pos5(stem,0); x5=x4; y5=max(.55bh,2vair);
filldraw stroke super_arc.e(3,4)&z4e..z5e; % arc and stem
pos6(.3[thin_join,vair],90); x6=x4; bot y6=bh;
pos7(round(curve-2stem_corr),180);
lft x7r=round max(.5u,1.5u-.5curve); y7=1/3[top y8l,top y6r];
pos8(vair,270); x8l=.5w-.75u; bot y8r=-oo;
pos9(thin_join,360); z9l=z5l;
(x,y8r)=whatever[z8l,z9l]; x8r:=max(x,x8-u);
{{interim superness:=more_super;
filldraw stroke z9e{down}...z8e{left}...{up}z7e&super_arc.e(7,6)}}; % bowl
if serifs: numeric shaved_stem; shaved_stem=round(stem-3stem_corr);
if hair#+.5stem#>1.5u#: pickup tiny.nib;
pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
pos10(shaved_stem,0); x10=x5'; y10=.2[.5tiny,bh];
pos11(shaved_stem,0); rt x11r=round(w-.25u); bot y11=0;
filldraw stroke z5'e---z10e...z11e{right}; % foot
else: pickup crisp.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
pos10(shaved_stem,0); x10=x5'; y10=1/3bh;
pos11(.2[vair,stem],90); x11r=.5[x10r,x12r]; bot y11l=-vround .5oo;
pos12(hair,180); rt x12l=round(w-.1u); y12=max(y10,y11+vair);
pos13(hair,180); x13=x12; top y13=max(vround .6bh,top y12);
(x',y11l)=whatever[z11r,z12r]; x11l:=max(x',x10);
filldraw stroke z5'e---z10e...z11e{right}...z12e---z13e; fi % hook
else: numeric shaved_stem; shaved_stem=round(stem-stem_corr);
pickup tiny.nib; pos5'(shaved_stem,0); rt x5'r=fine.rt x5r; y5'=y5;
pos10(shaved_stem,0); x10=x5'; bot y10=0;
filldraw stroke z5'e--z10e; fi % base of stem
penlabels(1,2,3,4,5,7,8,9,10,11,12,13); labels(6); endchar;